/*
 * @Author: 0x9DEFA478
 * @Date: 2022-01-23 15:24:35
 * @LastEditTime: 2022-03-06 16:35:04
 * @LastEditors: 0x9DEFA478
 * @Description: 
 * QQ:2652450237
 * ============================================================================================================================================
 * 
 * 
 * 
 *                                                                                               ************      ****************************
 *                                                                                             ************      ****************************  
 *                                                                                           ************      ****************************    
 *                                                                                         ************      ****************************      
 *                                                                                       ************      ************                        
 *                                                                                     ************      ************                          
 *                                                                                   ************      ************                            
 *                                                                                 ************      ************                              
 *                                                                               ************      ************                                
 *                                                                             ************      ************                                  
 *                                                                           ************      ************                                    
 *                                                                         ************      ************                                      
 *                                                                       ************      ************                                        
 *                                                                     ************      ************                                          
 *                                                                   ************      ************                                            
 *                                                                 ************      ************                                              
 *                                                               ************      ************                                                
 *                                                             ************      ************                                                  
 *                                                           ************      ************                                                    
 *                                                         ************      ************                                                      
 *                                                       ************      ************                                                        
 *                                                     ************      ************                                                          
 *                                                   ************      ************                                                            
 *                                                 ************      ************                                                              
 *                                               ************      ************                                                                
 *                                             ************      ************                                                                  
 *                                           ************      ************                                                                    
 *                                         ************      ************                                                                      
 *                                       ************      ************                                                                        
 *                                     ************      ************                                                                          
 *                                   ************      ************                                                                            
 *                                 ************      ************                                                                              
 *                               ************      ************                                                                                
 *                             ************      ************                                                                                  
 *                           ************      ************                                                                                    
 *                         ************      ************                                                                                      
 *       ****************************      ************                                                                                        
 *     ****************************      ************                                                                                          
 *   ****************************      ************                                                                                            
 * ****************************      ************                                                                                              
 * 
 * 
 * 
 * ============================================================================================================================================
 * 
 */
#ifndef __API_H_NES_Config_H_
#define __API_H_NES_Config_H_
#include "../LL/H_NES_UserConfig.h"




#ifndef vH_NES_CPU_UseUnofficialOpcode
//使用非官网操作码 目前仅实现了部分非官方操作码 该宏是为了以后可能的实现使用
#define vH_NES_CPU_UseUnofficialOpcode                            0
#endif




#ifndef vH_NES_APU_Enable
//是否启用声音生成 如果不启用, 音频输出回调仍然会调用, 但是其中的数据无效
#define vH_NES_APU_Enable                                         1
#endif

#ifndef vH_NES_APU_OutputChannelSrc
//是否输出各通道的原始数据
//0:不使能 将输出16bit(每个样本)有符号的PCM数据(声音的合成与滤波均为整型运算 对CPU要求低)
//1:使能   输出变更为32bit(每个样本) [0:4]:Pulse1+Pulse2 bit[8:11]:Triangle bit[16:19]:Noise bit[24:30]:DMC
//在输出原始数据的模式中, 会vH_NES_APU_OutputDiv失效(固定1分频), 用户可以使用更高质量的合成方式
#define vH_NES_APU_OutputChannelSrc                               1
#endif

#ifndef vH_NES_APU_OutputDiv
//输出样本分频 用于使输出样本减少到1/vH_NES_APU_OutputDiv
#define vH_NES_APU_OutputDiv                                      1
#endif

#ifndef vH_NES_APU_NumOfOutputSample
//每次输出音频样本的数量 这个数量是分频之后的
#define vH_NES_APU_NumOfOutputSample                              1024
#endif




#ifndef oH_NES_Printf
//NES信息输出
#define oH_NES_Printf(_in_Format,...)
#endif




#define oH_NES_Exception(_in_Console,_in_RetVal,_in_Format,...) \
do{\
  void (*_temp_ThreadExit)(int);\
  _temp_ThreadExit=_in_Console->LL_Function.Thread.ThreadExit;\
  _in_Console->RetVal=_in_RetVal;\
  H_NES_Console_PreExit(_in_Console);\
  oH_NES_Printf(_in_Format,##__VA_ARGS__);\
  _temp_ThreadExit(_in_RetVal);\
}while(0)



#endif //__API_H_NES_Config_H_
